#[cfg(test)]
mod tests {
    // `elided_input` 和 `annotated_input` 事实上拥有相同的签名，
    // `elided_input` 的生命周期会被编译器自动添加：
    fn elided_input(x: &i32) {
        println!("`elided_input`: {}", x)
    }

    fn annotated_input<'a>(x: &'a i32) {
        println!("`annotated_input`: {}", x)
    }

    // 类似地，`elided_pass` 和 `annotated_pass` 也拥有相同的签名，
    // 生命周期会被隐式地添加进 `elided_pass`：
    fn elided_pass(x: &i32) -> &i32 {
        x
    }

    fn annotated_pass<'a>(x: &'a i32) -> &'a i32 {
        x
    }

    #[test]
    fn test() {
        let x = 3;

        elided_input(&x);
        annotated_input(&x);

        println!("`elided_pass`: {}", elided_pass(&x));
        println!("`annotated_pass`: {}", annotated_pass(&x));
    }
}
